<?php
/*
  * Copyright (c) 2011 Joao Paulo Cirino Silva de Novais <joaopaulonovais@gmail.com>
  *
 */

class View {
    /**
     * Representa o modelo de visao (HTML).
     *
     * @var HTML_Template_IT
     */
    protected $modelo;

    /**
     * Representa o modo de visao requerido (Pesquisa ou Aplicacao).
     *
     * Por ser um atributo estatico, pode ser modificado, mesmo antes da
     * instanciacao do objeto.
     *
     * Atua como uma simplificacao do Design pattern: Singleton, sendo restrito
     * a um metodo ao inves de um objeto inteiro.
     *
     * @var String (Base::APLICACAO, Base::PESQUISA)
     */
    static $visao;

    const APLICACAO = "Aplicacao";
    const PESQUISA  = "Pesquisa";

    function __construct($modelo) {

        $this->modelo  = new HTML_Template_IT();
        $this->modelo->loadTemplateFile($modelo);
    }

    function mostrarDataSistema($modelo = null) {

        $modelo = ($modelo) ? $modelo : $this->modelo;
    }

    static function setVisao($visao) {

        if ($visao == View::PESQUISA) {

            View::setPesquisa();
        } else {

            View::setAplicacao();
        }
    }

    static function preencherCaixaSelecao($bloco, $itens, $itemSelecionado, $codigo , $descricao) {

        $this->modelo->setCurrentBlock($bloco);
        
        foreach ($itens as $item) {
            $opcao = Array();

            $opcao["$codigo"]    = $item->get("$codigo");
            $opcao["$descricao"] = $item->get("$descricao");

            if ($item->get("$codigo") == $itemSelecionado) {
                
                $opcao["selecionado"] = "selected='selected'";
            }

            $this->modelo->setVariable($opcao);
            $this->modelo->parseCurrentBlock();
        }
    }

    static function getVisao()     { return View::$visao;                    }
    static function setAplicacao() { return View::$visao =  View::APLICACAO; }
    static function isAplicacao()  { return View::$visao == View::APLICACAO; }
    static function setPesquisa()  { return View::$visao =  View::PESQUISA;  }
    static function isPesquisa()   { return View::$visao == View::PESQUISA;  }
}

?>
